﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

using RESTTarjetaService.Dominio;
using System.ServiceModel.Web;
using System.Net;
using System.Web.Script.Serialization;
using System.IO;
using RESTTarjetaService.Persistencia;

namespace RESTTarjetaService
{
    // NOTA: puede usar el comando "Rename" del menú "Refactorizar" para cambiar el nombre de clase "TarjetasService" en el código, en svc y en el archivo de configuración a la vez.
    public class TarjetasService : ITarjetasService
    {
        private TarjetaDAO dao = new TarjetaDAO();

        public Cliente ObtenerTarjetas(string dni)
        {
            return dao.Obtener(Convert.ToInt32(dni));
        }

        public Cliente ModificarTarjetas(Cliente clienteAModificar)
        {
            return dao.Modificar(clienteAModificar.dni);
        }

        public List<Dominio.Cliente> ListarTarjetasCliente()
        {
          //Aqui se implementar el consumo del Servicio ProcesarTarjetasMC de RESTProcesosMCService
            //Este 
            //string tarjetaObtenida;
            //Aqui se debe implementar el consumo del Servicio ListarTarjetasCliente
            HttpWebRequest req2 = (HttpWebRequest)WebRequest
                           .Create("http://localhost:1414/ClientesMCService.svc/ClientesMC");
            req2.Method = "GET";
            HttpWebResponse res2 = (HttpWebResponse)req2.GetResponse();
            StreamReader reader2 = new StreamReader(res2.GetResponseStream());
            string ClienteJson2 = reader2.ReadToEnd();
            JavaScriptSerializer js2 = new JavaScriptSerializer();
            List<Cliente> ClienteObtenidos = js2.Deserialize<List<Cliente>>(ClienteJson2);

            wsRipleyService.RipleyServiceClient proxyRipley = new wsRipleyService.RipleyServiceClient();
            List<wsRipleyService.Cliente> clienteList = proxyRipley.ListarTarjetasCliente().ToList();

            List<Cliente> ListaClientes = new List<Cliente>();
            Cliente ClienteEncontrado = null;
            
            foreach (wsRipleyService.Cliente resultado in clienteList)
            {
                ClienteEncontrado = new Cliente()
                {

                    dni = (int)resultado.dni,
                    nombre = (string)resultado.nombres,
                    apellidoPaterno = (string)resultado.apellidoPaterno,
                    apellidoMaterno = (string)resultado.apellidoMaterno,
                    lineaCredito = (decimal)resultado.lineaCredito,
                    tarjeta = (string)resultado.tarjeta
                };
                ListaClientes.Add(ClienteEncontrado);
            }

            return ListaClientes;
        }

    }
}
